www.gusucode.com > matlab从零到进阶程序与数据 > matlab从零到进阶程序与数据/第4章 MATLAB程序设计/InlineAnonymousNestedDemo.m
function InlineAnonymousNestedDemo %% 用inline解决 tic; k=linspace(0,5); y1 = zeros(size(k)); for i=1:length(k) kk=k(i); fun=inline(['sin(',num2str(kk),'*x).*x.^2']); y1(i)=quadl(fun,0,5); end time = toc; disp(['用inline方法的时间是:',num2str(time),'秒!']) %% 用anonymous function 解决 tic; f=@(k) quadl(@(x) sin(k.*x).*x.^2,0,5); kk=linspace(0,5); y2=zeros(size(kk)); for ii=1:length(kk) y2(ii)=f(kk(ii)); end time = toc; disp(['用anonymous function方法的时间是:',num2str(time),'秒!']) %% 用nested function解决 function y = ParaInteg(k) y=quadl(@(x) sin(k.*x).*x.^2 ,0,5); end tic; kk=linspace(0,5); y3=zeros(size(kk)); for ii=1:length(kk) y3(ii)=ParaInteg(kk(ii)); end time = toc; disp(['用nested function方法的时间是:',num2str(time),'秒!']) %% 用 arrayfun + anonymous function 解决 tic;y4 = arrayfun(@(k) quadl(@(x) sin(k.*x).*x.^2,0,5),linspace(0,5));time = toc; disp(['用arrayfun + anonymous function方法的时间是:',num2str(time),'秒!']) plot(kk,y2); xlabel('k'); ylabel('f(k)') end